Embedded systems are well known; this refers to microprocessors and microcontrollers (hereinafter generically referred to as microprocessors) used in devices other than general purpose computers. For instance many household appliances (such as microwave ovens) have embedded microprocessors which control operation of the appliance. The microprocessor typically accepts user input, for instance from the keypad of the microwave oven, and controls operation of the microwave oven, for instance the level of heating and duration of cooking. The embedded microprocessor also controls the device display which in a microwave oven is a small LCD (liquid crystal display). That is, the intelligence of such appliances resides in the embedded microprocessor, which interfaces to the human user. Typically this is done through firmware, i.e. computer software executed by the embedded microprocessor and stored in a memory associated with, or a part of, the microprocessor. In addition to executing the software to interact with the controlled device, the embedded microprocessor also accepts and decodes input from the human user, for instance via the keypad, as well as provides visual feedback on the display by providing text and/or graphic information to a display controller which in turn drives the LCD panel.
As shown in the block diagram of FIG. 1, the embedded microprocessor 10 (in the drawing designated by the alternative terminology “microcontroller”) is a commercially available device, for instance an 8 or 16-bit microcontroller of the type available from a number of vendors. This embedded microprocessor conventionally includes, in addition to its logic circuitry, storage such as ROM (read only memory) which holds what is called firmware 12, which is a type of computer software, and also conventional RAM (random access memory) which is not shown. Firmware 12 performs the indicated functions of application flow, device control (of the controlled device of which the embedded microprocessor is a part) reaction to user input, and the capability to draw pixels to the display controller 24 frame buffer 30.
As shown, the microprocessor 10 is coupled to a user input device 14, e.g. a keypad, an infrared remote controller such as used on television sets, or a touch screen input device. The associated controlled device (not shown) is, for instance, an appliance such as a microwave oven, washing machine, or automobile system, or a scientific instrument, or a machine tool, and is connected conventionally to microprocessor 10. It is to be appreciated that the lines connecting the blocks in FIG. 1 represent buses, that is, parallel multiline connections. The embedded microprocessor 10 supplies input (commands) from the human user via the user input device 14 to control the controlled device and gives user indications on the display 20. Display 20 is driven via conventional pixel drivers/video circuitry 22. The user input device 14, of course, does not directly affect the controlled device, nor does it directly control the display processor 20. Instead, the embedded microprocessor 10 accepts and decodes the user input from the user input device 14, then controls the controlled device and provides information to the user on display 20. Similarly, the display device 20 does not directly display information from the user input device 14, nor the controlled device; instead it only displays information provided to it by the embedded microprocessor 10. This display takes place via the display controller 24, which is often a separate, commercially available, integrated circuit. Display controller 24 includes several well known elements which are the microcontroller (microprocessor) bus interface 28, which drives the frame buffer 30 and the associated LCD/video interface 34. As shown, the display device is for instance an LCD (liquid crystal display), VFD (vacuum fluorescent display), CRT (cathode ray tube), etc.
The FIG. 1 system is well known and has been in use for many years. It is generally suitable for a high volume production products such as household appliances where manufacturing (parts) cost is important and nonrecurring engineering charges for developing software are relatively less important. The reason for this is that the firmware executed by the microprocessor 10 must be customized for each class of controlled device, as well as for the user input device 14 and the display 20. This requires a substantial amount of software engineering effort. However, this approach is less well adapted for non-mass-produced products such as industrial control systems, or limited production products where the software engineering costs are relatively more important than the costs of the integrated circuits. Also, even for mass produced products that are subject to frequent changes in the firmware to be executed by the embedded microprocessor 10, the costs of changing the firmware are high and the FIG. 1 approach is relatively expensive and inefficient. Hence, this approach has significant drawbacks in terms of development time and engineering cost.